'''
BeautifulSoup是将复杂的HTML文档转换成一个复杂的树形结构，每个节点都是Python对象，所有对象可以归纳为4种：

-Tag : 标签
-NavigableString : 文本
-BeautifulSoup : 本身
-Comment : 注释
'''

from bs4 import BeautifulSoup
import re

file = open("./baidu.html", "rb")
html = file.read().decode("utf-8")
bs = BeautifulSoup(html, "html.parser")
 

# 文档遍历
# print(bs.div.contents[1])
# 更多内容 搜索文档

# 文档搜索

#(1)find_all:字符串过滤，会查找与字符串完全匹配的内容
t_list = bs.find_all("a")
print(t_list[0])

#(2)正则表达式搜索:使用search()方法来匹配内容
t_list = bs.find_all(re.compile("a"))

#(3)用方法来搜索，传入一个函数（方法），根据函数的要求来搜索
def name_is_exists(tag):
	return tag.has_attr("name")

t_list = bs.find_all(name_is_exists)

# 2. kwargs 参数搜索
t_list = bs.find_all(id="head")

# 3. text文本参数
t_list = bs.find_all(text="hao123")

# 4. limit参数
t_list = bs.find_all("a", limit=3)

# css选择器
bs.select("title") # 标签
bs.select(".mnav") # 类名
bs.select("#u1") # 按照id来查找
bs.select("a[class='bri']") # 根据属性来查找
bs.select("head > title") # 根据字标签查找

bs.select(".mnav ~ .bri")[0].get_text() # 根据兄弟节点查找